package com.qst.interceptor;

import com.qst.domain.User;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

public class ResourcesInterceptor extends HandlerInterceptorAdapter {
    //任意角色都能访问的路径
    private List<String> ignoreUrl;

    public ResourcesInterceptor(List<String> ignoreUrl) {
        this.ignoreUrl = ignoreUrl;
    }

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        User u = (User) request.getSession().getAttribute("USER_SESSION");
        // 获取请求路径
        String uri = request.getRequestURI();
        if (u!=null){
            // 如果用户登录过,且用户是管理员,则直接放行
            if ("ADMIN".equals(u.getRole())) {
                return true;
            }else {
                for (String url : ignoreUrl) {
                    // 否则判断普通用户访问的资源是不是允许的资源,允许则放行
                    if (uri.contains(url)){
                        return true;
                    }
                }
            }
        }
        // 如果访问的是登录,则放行
        if (uri.contains("login")){
            return true;
        }
        // 其他情况都直接跳转到登录页面
        request.setAttribute("msg","您还没有登录,请先登录");
        request.getRequestDispatcher("/admin/login.jsp").forward(request,response);
        return false;
    }
}
